package com.dragon.modules.yuegou.enums.points;

import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 积分类型
 * 
 * @author pbuilder generated
 *
 */
public enum DetailType {

	/**
	 * 导入
	 */
	IMPORTS(0, "导入"),
	/**
	 * 上传小票
	 */
	APPLY(1, "上传小票"),
	/**
	 * 签到
	 */
	SIGN(2, "签到"),
	/**
	 * 积分商城
	 */
	MALL(3, "积分商城"),
	/**
	 * 注册送积分
	 */
	REGISTER(4, "注册送积分"),
	/**
	 * H5支付
	 */
	H5(5, "H5支付"),
	/**
	 * H5兑换停车券
	 */
	H5EXCHANGE(6, "H5兑换停车券"),
	/**
	 * 后台编辑
	 */
	EDIT(7, "后台编辑"),
	/**
	 * 答题活动赠送
	 */
	DACT(8, "答题活动赠送"),
	/**
	 * 微信支付积分
	 */
	WXPAY(9, "微信支付积分"),
	
	/**
	 * 支付宝支付积分
	 */
	ALIPAY(10, "支付宝支付积分"),
	/**
	 * 积分抽奖
	 */
	EXTRACT(11, "抽奖消耗"),
	
	PRIZE(12, "抽奖赠送"),
		
	/**
	 * 线上购物
	 */
	ONLINESHOP(13, " 线上购物"),

	/**
	 * 停车抵扣
	 */
	PARK(14, "停车抵扣");

	/**
	 * 枚举标识
	 */
	private final Integer code;

	/**
	 * 别名
	 */
	private final String alias;

	private DetailType(Integer code, String alias) {
		this.code = code;
		this.alias = alias;
	}
	
	public Integer getValue() {
		return code;
	}

	/**
	 * 枚举标识
	 * 
	 * @return code
	 */
	public Integer getCode() {
		return code;
	}

	/**
	 * 别名
	 * 
	 * @return alias
	 */
	public String getAlias() {
		return alias;
	}

	/**
	 * 把code转化为费用类型枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	@JsonCreator
	public static DetailType from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for DetailType
	 */
	private static final Map<Integer, DetailType> CODE_MAP = Stream.of(DetailType.values())
			.collect(Collectors.toMap(DetailType::getCode, e -> e));

}
